package com.huahang.fashionpress.controller;

import com.huahang.fashionpress.exception.ResultException;
import com.huahang.fashionpress.form.FormUser;
import com.huahang.fashionpress.service.impl.LoginServiceImpl;
import com.huahang.fashionpress.util.Md5Util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Map;

/**
 * 登录控制
 * @author : 王翰聪
 * @since : 2019/08/21
 * @version : 1.0
 * @version : 1.1
 * @version : 1.2
 */
@Controller
@RequestMapping("/login")
public class LoginController {
    @Autowired
    private LoginServiceImpl longinService;

    /**
     * 直接跳转登录页面
     * @return 登录页面
     *
     * 更新:
     * @since : 2019/08/22
     * 修改了登录跳转的逻辑错误
     */
    //跳转登录页面
    @RequestMapping("/")
    public String getLoginView(){
        return "client/login";
    }

    /**
     * 用户登录检查控制
     * @param username 用户名
     * @param password 用户密码
     * @param request 如果是从别的页面跳转过来，则需要从request中取出url字段
     * @param session 将id存入session
     * @return url指向的页面或者主页
     *
     * 功能更新:
     * @since 2019/08/22
     * 向session中添加了userID字段，用于登录验证
     */
    //登录检查
    @RequestMapping("/loginCheck")
    public ModelAndView loginCheck(String username, String password, HttpServletRequest request, HttpSession session, Map map) throws Exception, ResultException {
        //从request获取来的页面
        String url = (String) session.getAttribute("url");
        //将用户名和密码封装
        FormUser formUser = new FormUser();
        formUser.setUserUsername(username);
        formUser.setUserPassword(Md5Util.getMd5String(password));
        //将查询结果放入session返回页面
        session.setAttribute("userID", longinService.login(formUser));
        map.put("currIndex", 1);
        if(url == null || url.isEmpty()){
            return new ModelAndView("redirect:/index", map);
        }
        //返回目标页面
        session.removeAttribute("url");
        return new ModelAndView("redirect:" + url);
    }
}
